草庐IT

c++ - 通过类名实例化类

全部标签

ruby-on-rails - 通过关联获取 has_many 的 ActiveRecord::RecordInvalid 错误;连接表上的验证问题

我有如下三个关联模型:classProduct当我做类似的事情时:doc=user.documents.builddoc.update_attributes(:product_ids=>[1,2])并且description验证失败,然后我得到false和doc上的相应错误。这正是我想要的。但是,如果doc已经存在,例如:doc=user.documents.firstdoc.update_attributes(:product_ids=>[1,2])并且description验证失败,然后我得到一个ActiveRecord::RecordInvalid错误。我很清楚为什么会这样——i

c - 命令行错误消息的 "POSIX-defined format"是什么?哪个标准?

在ruby​​-doc.org上page我发现了以下关于命令行选项/参数解析(getopt库)的内容:ReturntheappropriateerrormessageinPOSIX-definedformat.Ifnoerrorhasoccurred,returnsnil.命令行错误消息的POSIX定义格式是什么?它是哪个POSIX标准?编辑:我必须澄清一下,我对标准/推荐的错误消息很感兴趣解析命令行参数/选项。在下面的链接(答案)中,我发现只提到了getopt的这种错误格式:"%s:illegaloption--%c\n",,"%s:optionrequiresanargument-

Ruby:自动将实例变量设置为方法参数?

是否有计划实现类似于在方法参数列表中指定实例变量名称的CoffeeScript功能的ruby​​行为?喜欢classUserdefinitialize(@name,age)#@nameissetimplicitly,but@ageisn't.#thelocalvariable"age"willbeset,justlikeitcurrentlyworks.endend我知道这个问题:inRubycanIautomaticallypopulateinstancevariablessomehowintheinitializemethod?,但所有的解决方案(包括我自己的)似乎都不符合ruby

ruby-on-rails - 动态扩展 Virtus 实例属性

假设我们有一个Virtus模型UserclassUserincludeVirtus.modelattribute:name,String,default:'John',lazy:trueend然后我们创建该模型的一个实例并从Virtus.model扩展以动态添加另一个属性:user=User.newuser.extend(Virtus.model)user.attribute(:active,Virtus::Attribute::Boolean,default:true,lazy:true)当前输出:user.active?#=>trueuser.name#=>'John'但是当我尝试

ruby-on-rails - 通过 Regex、Ruby 拆分时保留模式字符

我有以下字符串str="HelloWorldHowareYouIAmFine"我要把这个字符串放到下面的数组中["Hello","WorldHoware","YouIAm","Fine"]我一直在使用以下正则表达式,它正确拆分但也省略了匹配模式,我也想保留该模式。我得到的是str.split(/[a-z][A-Z]/)=>["Hell","orldHowar","ouIA","ine"]它省略了匹配模式。谁能帮我解决如何在结果数组中保留这些字符 最佳答案 在Ruby1.9中,您可以使用positivelookaheadandposi

ruby-on-rails - Ruby -::in 类名

我正在处理一些遗留的RoR代码,它有四个相关的类,每个类都在自己的文件中定义。所有这些类都是解析器类,位于app/models/parsers中。每个文件名都以_parser.rb结尾。这是来自文件adf_parser.rb的示例类定义行:classParsers::AdfParser我不知道Parsers::的一部分在做什么。在我能找到的任何地方都没有定义名为Parsers的显式模块。我没有看到任何关于通过将模块规范添加到类名来隐式创建模块的文档。唯一的外部依赖是“需要'csv'”。类定义中有include语句,但我认为它们没有任何可以解释类名的内容。我创建了一个新的RoR测试项目并

ruby - 模块的实例变量是否在类与 mixin 之间共享?

我想知道Ruby模块的实例变量在多个类中的行为如何“混合”它。我写了一个示例代码来测试它:#HereisamoduleIcreatedwithoneinstancevariableandtwoinstancemethods.moduleSharedVar@color='red'defchange_color(new_color)@color=new_colorenddefshow_colorputs@colorendendclassExample1includeSharedVardefinitialize(name)@name=nameendendclassExample2includ

c - 在不使用其他功能的情况下释放 C 扩展中的全局 VM 锁

我不明白为什么在发布或获取RubyCAPI中的GVL时需要另一个间接级别。rb_thread_call_without_gvl()和rb_thread_call_with_gvl()都需要一个只接受一个参数的函数,但情况并非总是如此。我不想仅仅为了发布GVL而将我的参数包装在一个结构中。它使代码的可读性变得复杂,并且需要从void指针转换到void指针。在查看Ruby的线程代码后,我找到了GVL_UNLOCK_BEGIN。/GVL_UNLOCK_END与Python的Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS匹配的宏但我找不到关于它们以及何时

通过传递构造函数的 Ruby YAML 解析器

我正在开发一个应用程序,该应用程序从YAML文件获取输入,将它们解析为对象,然后让它们执行它们的操作。我现在遇到的唯一问题是YAML解析器似乎忽略了对象“初始化”方法。我指望构造函数用默认值填充YAML文件缺少的任何实例变量,并将一些东西存储在类变量中。这是一个例子:classTest@@counter=0definitialize(a,b)@a=a@b=b@a=29if@b==3@@counter+=1enddefself.how_manyp@@counterendattr_accessor:a,:bendrequire'YAML'a=Test.new(2,3)s=a.to_yaml

ruby - 你如何将 shell 输出通过管道传递给 ruby​​ -e?

假设我在我的终端中输入了一些东西,比如:ls|grepphrase这样做之后我意识到我想删除所有这些文件。我想使用Ruby来这样做,但不太清楚要将什么传递给它。ls|grepphrase|ruby-e"whatdoIputinheretogothrougheachlinebyline?" 最佳答案 以此为起点:ls~|ruby-ne'print$_if$_[/^D/]'哪个返回:DesktopDocumentsDownloadsDropbox-n标志表示“遍历所有传入行”并将它们存储在“默认”变量$_中。我们没有看到该变量使用太多,